Spring Boot Actuator এবং Micrometer এর মাধ্যমে আপনার Spring Boot অ্যাপ্লিকেশনে নিরাপত্তা সম্পর্কিত মেট্রিক্স এবং মনিটরিং সক্রিয় করতে পারেন। এই টুলগুলোর সাহায্যে আপনি অ্যাপ্লিকেশনের পারফরম্যান্স, নিরাপত্তা এবং অন্যান্য গুরুত্বপূর্ণ তথ্য ট্র্যাক করতে পারবেন, যা আপনাকে নিরাপত্তা সংক্রান্ত বিষয়গুলি মনিটর করতে সহায়ক।
Spring Boot Actuator এর মাধ্যমে endpoints, metrics, এবং health checks পাওয়া যায়, এবং Micrometer-এর মাধ্যমে আপনি metrics সংগ্রহ এবং প্রদর্শন করতে পারবেন। এই টুলগুলির সংমিশ্রণ নিরাপত্তা সম্পর্কিত মেট্রিক্স, যেমন authentication attempts, failed login attempts, active sessions, user roles ইত্যাদি মনিটর করতে সাহায্য করবে।
Spring Boot Actuator Setup
Spring Boot Actuator আপনাকে অ্যাপ্লিকেশনের স্বাস্থ্য, মেট্রিক্স, এবং অন্যান্য কার্যক্ষমতা মনিটরিং endpoints প্রদান করে। নিরাপত্তা সম্পর্কিত monitoring এবং metrics সংগ্রহ করতে Actuator এবং Micrometer দুটি টুল ব্যবহার করা হয়।
1. Spring Boot Actuator Dependency
প্রথমে, spring-boot-starter-actuator এবং micrometer-registry-prometheus dependencies আপনার pom.xml ফাইলে যোগ করুন।
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
spring-boot-starter-actuator: এটি Spring Boot অ্যাপ্লিকেশনের জন্য actuator endpoints প্রদান করে।micrometer-registry-prometheus: এটি Prometheus-এর সাথে মেট্রিক্স ইন্টিগ্রেট করতে ব্যবহৃত হয়, তবে আপনি অন্যান্য registry (যেমন, Datadog, InfluxDB) ব্যবহার করতে পারেন।
2. Actuator Configuration in application.properties
Actuator endpoints কনফিগার করতে, আপনাকে application.properties বা application.yml ফাইলের মাধ্যমে এটি কনফিগার করতে হবে।
management.endpoints.web.exposure.include=health,metrics,security
management.endpoint.health.show-details=always
management.metrics.export.prometheus.enabled=true
management.endpoints.web.exposure.include: এই প্রপার্টির মাধ্যমে আপনি যে endpoints দেখতে চান তা কনফিগার করতে পারেন। যেমন, এখানেhealth,metrics, এবংsecurityকে প্রদর্শন করা হয়েছে।management.endpoint.health.show-details: এই প্রপার্টি দিয়ে স্বাস্থ্য চেকের বিস্তারিত তথ্য দেখানো হয়।management.metrics.export.prometheus.enabled: এটি Prometheus মেট্রিক্স এক্সপোর্ট করতে সক্ষম করবে।
3. Micrometer Integration for Security Monitoring
Micrometer Spring Boot অ্যাপ্লিকেশনগুলির জন্য একটি সাধারণ মেট্রিক্স সংগ্রহকারী টুল যা বিভিন্ন মেট্রিক্স সিস্টেমের সাথে ইন্টিগ্রেট করতে সক্ষম।
Security Metrics Collection:
Spring Security এর কিছু গুরুত্বপূর্ণ মেট্রিক্স যেমন authentication attempts, failed logins, active users ইত্যাদি Micrometer এর মাধ্যমে মনিটর করা যেতে পারে।
Security Monitoring Setup
Spring Security এর নিরাপত্তা সম্পর্কিত মেট্রিক্স সংগ্রহের জন্য Micrometer ব্যবহার করতে MeterRegistry এর মাধ্যমে মেট্রিক্স রেজিস্টার করতে হবে। নিচে একটি উদাহরণ দেওয়া হলো যেখানে failed login attempts এবং successful login attempts এর জন্য মেট্রিক্স সংগ্রহ করা হচ্ছে।
import io.micrometer.core.instrument.MeterRegistry;
import org.springframework.security.authentication.event.AuthenticationFailureBadCredentialsEvent;
import org.springframework.security.authentication.event.AuthenticationSuccessEvent;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Component;
@Component
public class SecurityMetricsListener {
private final MeterRegistry meterRegistry;
public SecurityMetricsListener(MeterRegistry meterRegistry) {
this.meterRegistry = meterRegistry;
}
// Failed login attempts metric
@EventListener
public void handleAuthenticationFailure(AuthenticationFailureBadCredentialsEvent event) {
meterRegistry.counter("security.authentication.failure", "type", "bad_credentials").increment();
}
// Successful login attempts metric
@EventListener
public void handleAuthenticationSuccess(AuthenticationSuccessEvent event) {
meterRegistry.counter("security.authentication.success", "type", "success").increment();
}
}
Explanations:
meterRegistry.counter: এটি একটি নতুন মেট্রিক্স কাউন্টার তৈরি করে যা নির্দিষ্ট ধরনের ইভেন্টের জন্য মাপা হয়। এখানে,security.authentication.failureএবংsecurity.authentication.successকাউন্টার তৈরি করা হচ্ছে।EventListener: এটি Spring Security এর authentication events যেমন authentication success এবং authentication failure ইভেন্টগুলো ধরবে এবং সেই অনুযায়ী মেট্রিক্স আপডেট করবে।
4. Prometheus Configuration for Metrics Collection
Prometheus হল একটি মেট্রিক্স সংগ্রহকারী সিস্টেম যা Micrometer এর সাথে ইন্টিগ্রেট করা যেতে পারে। Actuator Prometheus endpoint দিয়ে Prometheus মেট্রিক্স সংগ্রহ করবে।
application.properties-এ Prometheus URL কনফিগার করুন:
management.endpoints.web.exposure.include=prometheus
এটি /actuator/prometheus এ Prometheus মেট্রিক্স এন্ডপয়েন্ট খুলবে। Prometheus এই endpoint থেকে মেট্রিক্স সংগ্রহ করবে।
5. Monitoring and Alerting
নিরাপত্তা মেট্রিক্স সঠিকভাবে ট্র্যাক করা হলে, আপনি Prometheus বা অন্য কোনো মেট্রিক্স সিস্টেম ব্যবহার করে নিরাপত্তা সম্পর্কিত অ্যালার্ট সেট করতে পারেন। আপনি বিভিন্ন alerting tools যেমন Grafana, Alertmanager, অথবা Datadog ব্যবহার করে এই মেট্রিক্স মনিটর এবং অ্যালার্ট করতে পারেন।
Grafana + Prometheus for Visualization
- Prometheus থেকে মেট্রিক্স সংগ্রহ করুন এবং Grafana এ ড্যাশবোর্ড তৈরি করুন।
- Grafana ড্যাশবোর্ডে
security.authentication.failureএবংsecurity.authentication.successমেট্রিক্স যোগ করুন। - অ্যালার্ট সেট করুন যাতে failed logins অথবা high authentication failure rate এর জন্য স্বয়ংক্রিয়ভাবে নোটিফিকেশন পাওয়া যায়।
6. Securing Actuator Endpoints
Actuator endpoints, যেমন /actuator/health, /actuator/metrics, এবং /actuator/prometheus, নিরাপদ রাখা উচিত, যাতে শুধুমাত্র অনুমোদিত ব্যবহারকারী অথবা অ্যাডমিনিস্ট্রেটররা অ্যাক্সেস করতে পারে। এই জন্য Spring Security কনফিগারেশন করতে হবে।
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.web.SecurityFilterChain;
@Configuration
@EnableWebSecurity
public class SecurityConfig {
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/actuator/health", "/actuator/metrics", "/actuator/prometheus").hasRole("ADMIN") // Restrict actuator access
.anyRequest().authenticated()
.and()
.formLogin();
return http.build();
}
}
এখানে /actuator/health, /actuator/metrics, এবং /actuator/prometheus URLs কেবল ADMIN রোলের ব্যবহারকারীদের জন্য অ্যাক্সেসযোগ্য হবে।
Conclusion
Spring Boot Actuator এবং Micrometer ব্যবহার করে আপনি Spring Security-এর নিরাপত্তা সম্পর্কিত মেট্রিক্স যেমন authentication attempts, failed login attempts, active sessions, user roles ইত্যাদি ট্র্যাক করতে পারবেন। Actuator দিয়ে আপনি health checks, metrics, এবং Prometheus এর মাধ্যমে এসব মেট্রিক্স সংগ্রহ এবং মনিটর করতে পারবেন। Micrometer নিরাপত্তা মেট্রিক্স যেমন failed logins এবং successful logins ইভেন্টগুলি ট্র্যাক করে সহজেই Prometheus বা অন্য কোন মেট্রিক্স সিস্টেমে এক্সপোর্ট করতে সক্ষম।